1. Field of the Invention
The present invention relates to an improved data processing system. More specifically, the present invention is directed to a method, apparatus, and computer usable code for testing branches of execution and state transition logic in session initiation protocol application modular components.
2. Description of the Related Art
Session initiation protocol (SIP) is a signaling protocol for Internet conferencing, telephone, presence, event notification, and instant messaging. SIP was developed within the Multiparty Multimedia Session Control (MMUSIC) working group and issued by the Internet Engineering Task Force (IETF). Having been developed as a mechanism to only initiate, modify, and terminate communication sessions, SIP does not know the specific details of the communication sessions. Consequently, SIP is scalable, extensible, and may sit comfortably in different architectures and deployment scenarios.
SIP allows disparate computers, phones, televisions, and software to communicate via SIP messages. The structure of a SIP message is similar to a hypertext transfer protocol (HTTP) message, but with an addressing scheme similar to simple mail transfer protocol (SMTP). Using SIP, Internet users may locate and contact one another regardless of media content and number of participants. SIP negotiates communication sessions such that all users associated with a communication session may agree on and modify session features. Through SIP, participants may also add, drop, or transfer users.
SIP is used primarily in SIP applications. SIP applications are developed within SIP application servers using a servlet model, such as, for example, the Servlet model defined in Java™ Specification Requests (JSR) 116. SIP servlets are similar to HTTP servlets.
While SIP provides a flexible scheme for establishing sessions of communication between Internet users, developers of SIP applications often find it difficult to track SIP interactions as the complexity of SIP applications grows. SIP applications require developers to maintain application state and lifecycle, as well as execution flows, between different users. For example, if a third party joins a two party call, communication paths between parties increase as a result. This process becomes a tedious task for developers of SIP applications, since state transitions between users also increase. As a result, complex SIP applications may require a significant number of different interactions, depending upon the SIP application state and context. Currently, effective testing of SIP applications is difficult because the design paradigm of SIP applications has limited support for the SIP application composition and modularity.
Therefore, it would be advantageous to have an improved method and system for testing branch execution and state transition logic of SIP application modular components that may include multiple, complex interactions.